// 通过ES5 和ES6 手写promise 代码,加深理解


let MyPromise = require('./Mypromise')
// promise自己的实验
let p1 = new MyPromise(function(resolve,reject){
    // resolve(1)
    // reject("失败")

    // 给promise 加上异步的操作
    // setTimeout(()=>{
        resolve('返回一个Promise对象')
        // reject('异步失败')
    // },1000)
})
// 链式调用必须是需要上一级有返回值的情况下，输出的是上级的返回值。
// p1.then((val)=>{
//     console.log(val)
//     // return 100
// },(reason)=>{
//     console.log(reason,'=')
//     return 100
// }).then((val)=>{
//     console.log(val)
// },(reason)=>{
//     console.log(reason,'-')
// })
// p1.then((val)=>{
//     console.log(val)
// },(reason)=>{
//     console.log(reason)
// })

function other(){
    return new MyPromise((resolve,reject)=>{
        reject('reject other')
    })
}
let p2 = p1.then(val=>{
    console.log(val)
    return other()
    // return p2
},reason=>{
    console.log(reason)
})
// console.log(p2,'=========')
p2.then(val=>{
    console.log(val)
},reason=>{
    console.log(reason)
    console.log(reason.message)
})